Digital image edge detection

ABSTRACT

Edges are detected in a digital image including a plurality of pixels. For each of the plurality of pixels, a plurality of different edge assessments are made for that pixel. Each different edge assessment considers that pixel in a different position of a different pixel patch. The different edge assessments for each pixel are aggregated.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to U.S. Provisional Application No. 61/928,944, filed Jan. 17, 2014 and entitled “STRUCTURED FORESTS FOR FAST EDGE DETECTION”, the complete contents of which are hereby incorporated herein by reference for all purposes.

BACKGROUND

Edge detection has remained a fundamental task in computer vision since the early 1970's. The detection of edges is a critical preprocessing step for a variety of tasks, including object recognition, segmentation, and active contours. Traditional approaches to edge detection use a variety of methods for computing color gradient magnitudes followed by non-maximal suppression. Unfortunately, many visually salient edges do not correspond to color gradients, such as texture edges and illusory contours. State-of-the-art approaches to edge detection use a variety of features as input, including brightness, color and texture gradients computed over multiple scales. For top accuracy, globalization based on spectral clustering may also be performed.

Since visually salient edges correspond to a variety of visual phenomena, finding a unified approach to edge detection is difficult. Motivated by this observation, the use of learning techniques for edge detection has been explored through a number of approaches. Each of these approaches takes an image patch and computes the likelihood that only the center pixel contains an edge. One independent edge prediction for each pixel may then be combined with the one independent edge prediction for each other pixel using global reasoning.

SUMMARY

This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Furthermore, the claimed subject matter is not limited to implementations that solve any or all disadvantages noted in any part of this disclosure.

According to one embodiment of the present disclosure, edges may be detected in a digital image including a plurality of pixels. For each of the plurality of pixels, a plurality of different edge assessments are made for that pixel. Each different edge assessment considers that pixel in a different position of a different pixel patch. The different edge assessments for each pixel are aggregated.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows an example method for detecting edges in a digital image.

FIGS. 2A-2I show simplified examples of making edge detection assessments using different pixel patches.

FIG. 3 shows an example digital image and example edge maps corresponding to three different versions of an exemplary edge detection approach.

FIG. 4 shows an example edge-detecting computing system.

DETAILED DESCRIPTION

The present disclosure is directed to using a structured learning approach to detect edges in digital images. This approach takes advantage of the inherent structure in edge patches, while being computationally efficient. Using this approach, edge maps may be computed in realtime, which is believed to be orders of magnitude faster than competing state-of-the-art approaches. A random forest framework is used to capture the structured information. The problem of edge detection is formulated as predicting local segmentation masks given input image patches. This approach to learning decision trees uses structured labels to determine the splitting function at each branch in a decision tree. The structured labels are robustly mapped to a discrete space on which standard information gain measures may be evaluated. Each forest predicts a patch of edge pixel labels that are aggregated across the image to compute the final edge map.

FIG. 1 schematically shows an example method 100 for detecting edges. At 102, method 100 includes receiving an image including a plurality of pixels. The received image may be virtually any resolution and/or type of digital image. Further, the received image may be a frame of video. Each pixel of the image may have one or more information channels. As a nonlimiting example, each pixel can have a red color channel, a green color channel, and a blue color channel. As another example, each pixel may include a grayscale channel. As yet another example, each pixel may include a brightness channel and/or a spatial depth channel.

At 104, method 100 includes, for each of the plurality of pixels, making a plurality of different edge assessments for that pixel. Different edge assessments may consider each particular pixel in a different position of a different pixel patch.

For example, FIGS. 2A-2I schematically show the same portion 200 of an example digital image. FIG. 2A further shows a 3×3 pixel patch 202A, FIG. 2B shows a 3×3 pixel patch 202B, FIG. 2C shows a 3×3 pixel patch 202C, FIG. 2D shows a 3×3 pixel patch 202D, FIG. 2E shows a 3×3 pixel patch 202E, FIG. 2F shows a 3×3 pixel patch 202F, FIG. 2G shows a 3×3 pixel patch 202G, FIG. 2H shows a 3×3 pixel patch 202H, and FIG. 2I shows a 3×3 pixel patch 202I.

As described in detail below, an edge assessment can be made for each pixel in a particular patch. For example, pixel patch 202A from FIG. 2A may assess pixels A1, A2, A3, B1, B2, B3, C1, C2, and C3; and pixel patch 202I from FIG. 2I may assess pixels C3, C4, C5, D3, D4, D5, E3, E4, and E5.

Furthermore, each pixel may be assessed while that pixel occupies a different relative position in a pixel patch. For example, pixel C3 is considered in the lower right of pixel patch 202A, the lower middle of pixel patch 202B, the lower left of pixel patch 202C, the middle right of pixel patch 202D, the center of pixel patch 202E, the middle left of pixel patch 202F, the upper right of pixel patch 202G, the upper middle of pixel patch 202H, and the upper left of pixel patch 202I.

In the above example, the pixel patches are 3×3 squares, but that is in no way limiting. Pixel patches of any size and/or shape may be used, including pixel patches of non-square or even non-rectangular geometries.

Each different edge assessment may use a decision tree or a decision forest on a respective pixel patch. Each decision tree used in such an assessment may be previously trained via supervised machine learning as discussed below.

The same decision tree or forest of decision trees may be used on each pixel patch, or different decision trees or forests may be used for different pixel patches. When different decision trees or forests are used for different pixel patches, a set of decision trees or forests may be used in a repeating pattern. For example, a first decision tree could be used on pixel patches 202A, 202D, and 202G; a second decision tree could be used on pixel patches 202B, 202E, and 202H; and a third decision tree could be used on pixel patches 202C, 202F, and 202I. While a simple every-third repeating pattern is provided in the above example, any pattern can be used. As another example, the same structured forest may be periodically used for different pixel patches (e.g., every other patch, every-third patch, every-fourth patch, etc.).

When structured forests are used, each structured forest may utilize four or fewer decision trees. As one example, it is believed that using structured forests with two, three, or four decision trees efficiently produces good edge detection results. However, forests including more trees may be used.

Returning to FIG. 1, at 106, method 100 further includes, for each of the plurality of pixels, aggregating the different edge assessments for that pixel. Using the example of FIGS. 2A-2I, pixel C3 has been assessed in different positions of nine different pixel patches. The results from each such assessment may be aggregated into a final determination for that pixel.

In some implementations, the individual assessments may yield a binary output (e.g., edge=1; or not edge=0). These binary outputs may be averaged. As an example, if three assessments yield an edge (i.e., 1) and one assessment yields a not edge (i.e., 0), the average is (1+1+1+0)/4=0.75. In other implementations, each assessment optionally may be associated with a confidence or weighting. For example, the assessment from pixel patch 202E optionally may be weighted higher than the other assessments because pixel C3 is in the center of pixel patch 202E. As another example, the assessment from pixel patch 202C optionally may be discarded because the assessment of pixel patch 202C yielded a low confidence.

The final determinations for the different pixels may be formulated into an edge map. An edge map may include, for each pixel, an information channel that indicates whether that pixel is an edge pixel or a non-edge pixel and/or a confidence in the determination.

FIG. 3 shows an example digital image 302, and example edge maps corresponding to three different versions of the edge detection approach disclosed herein. Edge map 304 corresponds to a single scale approach in which one decision tree is used for each pixel patch. Edge map 306 corresponds to a single scale approach in which four decision trees are used for each pixel patch. Edge map 308 corresponds to a multiscale approach in which four trees are used for each pixel patch.

The approach set forth above with reference to FIGS. 1-3 is described in more detail below.

A decision tree f_(t)(x) classifies a sample x ∈ X by recursively branching left or right down the tree until a leaf node is reached. Specifically, each node j in the tree is associated with a binary split function:

h(x, θ_(j))∈ {0,1}  (1)

with parameters θ_(j). If h(x, θ_(j))=0 node j sends x left, otherwise right, with the process terminating at a leaf node. The output of the tree on an input x is the prediction stored at the leaf reached by x, which may be a target label y ∈ Y or a distribution over the labels Y.

While the split function h(x, θ) may be arbitrarily complex, a single feature dimension of x may be compared to a threshold. Specifically, θ=(k, τ) and h(x, θ)=[x(k)<τ], where [•] denotes the indicator function. As another example, θ=(k₁, k₂, τ) and h(x, θ)=[x(k₁)−x(k₂)<τ] may be used. The above both may be computationally efficient and effective in practice.

A decision forest is an ensemble of T independent trees f_(t). Given a sample x, the predictions f_(t)(x) from the set of trees are combined using an ensemble model into a single output. Choice of ensemble model is problem specific and depends on Y. As one example, majority voting may be used for classification and averaging may be used for regression, although more sophisticated ensemble models may be employed.

Arbitrary information may be stored at the leaves of a decision tree. The leaf node reached by the tree depends only on the input x, and while predictions of multiple trees must be merged in some useful way (the ensemble model), any type of output y can be stored at each leaf. This allows use of complex output spaces Y, including structured outputs.

While prediction is straightforward, training random decision forests with structured Y can be more challenging.

Each tree may be trained independently in a recursive manner For a given node j and training set S_(j) ⊂X×Y, the goal is to find parameters θ_(j) of the split function h(x, θ_(j)) that result in a ‘good’ split of the data. This requires defining an information gain criterion of the form:

I _(j) =I(S _(j) , S _(j) ^(L) , S _(j) ^(R))   (2)

where S_(j) ^(L)={(x, y)∈S_(j)|h(x, θ_(j))=0}, S_(j) ^(r)=S_(j)\S_(j) ^(L). Splitting parameters θ_(j) may be chosen to maximize the information gain I_(j); training then proceeds recursively on the left node with data and similarly for the right node. Training stops when a maximum depth is reached or if information gain or training set size fall below fixed thresholds.

For multiclass classification (Y ⊂

) the definition of information gain can be used:

$\begin{matrix} {I_{j} = {{H\left( S_{j} \right)} - {\sum\limits_{k \in {\{{L,R}\}}}\; {\frac{S_{j}^{k}}{S_{j}}{H\left( S_{j}^{k} \right)}}}}} & (3) \end{matrix}$

where H(S)=−Σ_(y) p_(y) log(p_(y)) denotes the Shannon entropy and p_(y) is the fraction of elements in S with label y. Alternatively the Gini impurity H(S)=Σ_(y) p_(y)(1−p_(y)) has also been used in conjunction with Eqn. (3).

For regression, entropy and information gain can be extended to continuous variables. Alternatively, an approach for single-variate regression (Y=R) is to minimize the variance of labels at the leaves. If the variance is written as

${{H(S)} = {{\frac{1}{S}{\sum\limits_{y}\; {\left( {y - \mu} \right)^{2}\mspace{14mu} {where}\mspace{14mu} \mu}}} = {\frac{1}{S}{\sum\limits_{y}y}}}},$

then substituting H for entropy in Eqn. (3) leads to the standard criterion for single-variate regression.

A more general information gain criterion may be defined for Eqn. (2) that applies to arbitrary output spaces Y, given mild additional assumptions about Y.

Individual decision trees exhibit high variance and tend to overfit. Decision forests ameliorate this by training multiple de-correlated trees and combining their output. A component of the training procedure is therefore to achieve a sufficient diversity of trees.

Diversity of trees can be obtained either by randomly subsampling the data used to train each tree or randomly subsampling the features and splits used to train each node. Injecting randomness at the level of nodes tends to produce higher accuracy models. Specifically, when optimizing Eqn. (2), only a small set of possible θ_(j) are sampled and tested when choosing the optimal split. E.g., for stumps where θ=(k, τ) and h(x, θ)=[x(k)<τ], √{square root over (d)} a features may be sampled, where X=R^(d) and a single threshold τ per feature.

In effect, accuracy of individual trees may be sacrificed in favor of a high diversity ensemble. Leveraging similar intuition allows for the introduction of an approximate information gain criterion for structured labels and leads to the generalized structured forest formulation.

Random decision forests may be extended to general structured output spaces Y. Of particular interest for computer vision is the case where x ∈ X represents an image patch and y ∈ Y encodes the corresponding local image annotation (e.g., a segmentation mask or set of semantic image labels).

Training random forests with structured labels poses two main challenges. First, structured output spaces are often high dimensional and complex. Thus scoring numerous candidate splits directly over structured labels may be prohibitively expensive. Second, and more critically, information gain over structured labels may not be well defined.

However, even approximate measures of information gain may suffice to train effective random forest classifiers. ‘Optimal’ splits are not necessary or even desired, All the structured labels y ∈ Y may be mapped at a given node into a discrete set of labels c ∈ C, where C={1, . . . , k}, such that similar structured labels y are assigned to the same discrete label c.

Given the discrete labels C, information gain calculated directly and efficiently over C can serve as a proxy for the information gain over the structured labels Y. By mapping the structured labels to discrete labels prior to training each node, the existing random forest training procedures may be leveraged to learn structured random forests effectively.

The present approach to calculating information gain may measure similarity over Y. However, for many structured output spaces, including those used for edge detection, computing similarity over Y is not well defined. Instead, a mapping of Y to an intermediate space Z is defined in which distance is easily measured. Therefore, a two-stage approach may be utilized to first map Y→Z and then to map Z→C.

The assumption is that for many structured output spaces, including for structured learning of edge detection, a mapping of the form may be defined:

Π: Y→Z   (4)

such that the dissimilarity of y ∈ Y can be approximated by computing Euclidean distance in Z. For example, for edge detection the labels y ∈ Y may be 16×16 segmentation masks and z=Π(y) may be defined to be a long binary vector that encodes whether every pair of pixels in y belong to the same or different segments. Distance may be measured in the resulting space Z.

Z may be high dimensional which presents a challenge computationally. For example, for edge detection there are

$\begin{pmatrix} {16 \cdot 16} \\ 2 \end{pmatrix} = 32640$

unique pixel pairs in a 16×16 segmentation mask, so computing z for every y would be expensive. However, as only an approximate distance measure is necessary, the dimensionality of Z can be reduced.

In order to reduce dimensionality, m dimensions of Z are sampled, resulting in a reduced mapping Π_(φ): Y→Z parameterized by φ. During training, a distinct mapping Π_(φ) may be randomly generated and applied to training labels Y^(j) at each node j. This serves two purposes. First, Π_(φ) can be considerably faster to compute than Π. Second, sampling Z injects additional randomness into the learning process and helps ensure a sufficient diversity of trees.

Finally, Principal Component Analysis (PCA) can be used to further reduce the dimensionality of Z. PCA denoises Z while approximately preserving Euclidean distance. In practice, Π_(φ) may be used with m=256 dimensions followed by a PCA projection to at most 5 dimensions.

Given the mapping Π_(φ): Y→Z, a number of choices for the information gain criterion are possible. For discrete Z multi-variate joint entropy could be computed directly. However, due to complexity of O(|Z|^(m)), only m≦2 could be used. However, m≧64 may be necessary to accurately capture similarities between elements in Z. Alternatively, given continuous Z, variance or a continuous formulation of entropy can be used to define information gain. Instead of the above, a simpler, extremely efficient approach may be used.

A set of structured labels y ∈ Y may mapped into a discrete set of labels c ∈ C, where C={1, . . . , k}, such that labels with similar z are assigned to the same discrete label c. The discrete labels may be binary (k=2) or multiclass (k>2). This allows for the use of standard information gain criteria based on Shannon entropy or Gini impurity as defined in Eqn. (3). Discretization may be performed independently when training each node and may depend on the distribution of labels at a given node.

The following are two approaches for obtaining the discrete label set C given Z. The first approach is to cluster z into k clusters using K-means. Alternatively, z may be quantized based on the top log₂(k) PCA dimensions, assigning z a discrete label c according to the orthant (generalization of quadrant) into which z falls. Both approaches perform similarly but the latter may be slightly faster. PCA quantization with k=2 may be used.

Finally, a set of n labels y₁ . . . y_(n) ∈ Y may be combined into a single prediction both for training (to associate labels with nodes) and testing (to merge multiple predictions). As before, an m dimensional mapping Π_(φ) may be sampled and z_(i)=Π_(φ)(y_(i)) may be computed for each i. The label y_(k) may be selected whose z_(k) is the medoid, i.e. the z_(k) that minimizes the sum of distances to all other z_(i). The medoid z_(k) minimizes Σ_(ij)(z_(kj)−z_(ij))². This is equivalent to min_(k) Σ(z_(kj)− z _(j))² and can be computed efficiently in time O(nm).

The ensemble model depends on m and the selected mapping Π_(φ). However, only the medoid for small n needs to be computed (either for training a leaf node or merging the output of multiple trees), so having a coarse distance metric suffices to select a representative element y_(k).

The biggest limitation is that any prediction y ∈ Y must have been observed during training; the ensemble model is unable to synthesize novel labels. Indeed, this is impossible without additional information about Y. In practice, domain specific ensemble models can be preferable. For example, in edge detection, the default ensemble model is used during training but a custom approach is utilized for merging outputs over multiple overlapping image patches.

According to the present disclosure, each pixel of an image (that may contain multiple channels, such as an RGB or RGBD image) may be labeled with a binary variable indicating whether the pixel contains an edge or not. Similar to the task of semantic image labeling, the labels within a small image patch are highly interdependent.

A set of segmented training images may be given, in which the boundaries between the segments correspond to contours. Given an image patch, its annotation can be specified either as a segmentation mask indicating segment membership for each pixel (defined up to a permutation) or a binary edge map. y ∈ Y=

^(d×d) is used to denote the former and y′ ∈ Y′={0,1}” for the latter, where d indicates patch width. An edge map y′ can be derived from segmentation mask y, but not vice versa. Both representations are used in this approach.

The learning approach may predict, for example, a structured 16×16 segmentation mask from a larger 32×32 image patch. Each image patch may be augmented with multiple additional channels of information, resulting in a feature vector x ∈ R^(32×32×K) where K is the number of channels. Features of two types may be used: pixel lookups x(i, j, k) and pairwise differences x(i₁, j₁, k)−x(i₂, j₂, k).

A set of color and gradient channels (e.g., a set developed for fast pedestrian detection) may be used. 3 color channels may be computed in CIE-LUV color space along with normalized gradient magnitude at 2 scales (original and half resolution). Additionally, each gradient magnitude channel may be split into 4 channels based on orientation. The channels may be blurred, for example, with a triangle filter of radius 2 and downsampled by a factor of 2. The result is 3 color, 2 magnitude and 8 orientation channels, for a total of 13 channels.

The channels may be downsampled by a factor of 2, resulting in 32·32·13/4=3328 candidate features x(i, j, k). The difference features also may be computed pairwise. A large triangle blur may be applied to each channel (8 pixel radius), and downsampled to a resolution of 5×5. Sampling all candidate pairs and computing their differences yields an additional

$\begin{pmatrix} {5 \cdot 5} \\ 2 \end{pmatrix} = 300$

candidate features per channel, resulting in 7228 total candidate features per patch.

A definition for mapping II: Y→Z may be used to train decision trees. The structured labels y may be 16×16 segmentation masks. One option is to use Π: Y→Y′, where y′ represents the binary edge map corresponding to y. However, Euclidean distance over Y′ yields a brittle distance measure.

An alternate mapping Π can be used. Let y(j) for 1≦j≦256 denote the j^(th) pixel of mask y. Since Y is defined only up to a permutation, a single value y(j) yields no information about y. Instead, a pair of locations are sampled j₁≠j₂ and checked to determine if y(j₁)=y(j₂). As such, z=Π(y) as a large binary vector that encodes [y(j₁)=y(j₂)] for every unique pair of indices j₁≠j₂. While Z has

$\quad\begin{pmatrix} 256 \\ 2 \end{pmatrix}$

dimensions, in practice only a subset of m dimensions need be computed. A setting of m=256 and k=2 is thought to give good results, effectively capturing the similarity of segmentation masks.

Random forests may achieve robust results by combining the output of multiple decorrelated trees. While merging multiple segmentation masks y ∈ Y can be difficult, multiple edge maps y′ ∈ Y′ can be averaged to yield a soft edge response. Taking advantage of a decision tree's ability to store arbitrary information at the leaf nodes, in addition to the learned segmentation mask y, the corresponding edge map y′ is also stored. This allows the predictions of multiple trees to be combined through averaging.

The efficiency of the present approach derives from the use of structured labels that capture information for an entire image neighborhood, reducing the number of decision trees T that need to be evaluated per pixel. The structured output may be computed densely on the image with a stride of, for example, 2 pixels. With 16×16 output patches, each pixel would receive 16²T/4≈64T predictions. In practice, 1≦T≦4 may be used.

It may be assumed that predictions are uncorrelated. Since both the inputs and outputs of each tree overlap, 2T total trees may be trained and an alternating set of T trees may be evaluated at each adjacent location. Use of such a ‘checkerboard pattern’ can improve results, introducing larger separation between the trees did not improve results further.

A multiscale version of the edge detector may be implemented. Given an input image I, the structured edge detector may be run on the original, half, and double resolution version of I. The result of the three edge maps may be averaged after resizing to the original image dimensions. Although less efficient, this approach may improve edge quality.

FIG. 4 schematically shows a non-limiting embodiment of an edge-detecting computing system 400 that can enact one or more of the methods and processes described above. Computing system 400 is shown in simplified form. Computing system 400 may take the form of one or more personal computers, server computers, tablet computers, home-entertainment computers, network computing devices, gaming devices, mobile computing devices, mobile communication devices (e.g., smart phone), and/or other computing devices.

Computing system 400 includes a logic machine 402 and a storage machine 404. Computing system 400 may optionally include a display subsystem 406, input subsystem 408, and/or other components not shown in FIG. 4.

Logic machine 402 includes one or more physical devices configured to execute instructions. For example, the logic machine may be configured to execute instructions that are part of one or more applications, services, programs, routines, libraries, objects, components, data structures, or other logical constructs. Such instructions may be implemented to perform a task, implement a data type, transform the state of one or more components, achieve a technical effect, or otherwise arrive at a desired result.

The logic machine may include one or more processors configured to execute software instructions. Additionally or alternatively, the logic machine may include one or more hardware or firmware logic machines configured to execute hardware or firmware instructions. Processors of the logic machine may be single-core or multi-core, and the instructions executed thereon may be configured for sequential, parallel, and/or distributed processing. Individual components of the logic machine optionally may be distributed among two or more separate devices, which may be remotely located and/or configured for coordinated processing. Aspects of the logic machine may be virtualized and executed by remotely accessible, networked computing devices configured in a cloud-computing configuration.

Storage machine 404 includes one or more physical devices configured to hold instructions executable by the logic machine to implement the methods and processes described herein. When such methods and processes are implemented, the state of storage machine 404 may be transformed—e.g., to hold different data.

Storage machine 404 may include removable and/or built-in devices. Storage machine 404 may include optical memory (e.g., CD, DVD, HD-DVD, Blu-Ray Disc, etc.), semiconductor memory (e.g., RAM, EPROM, EEPROM, etc.), and/or magnetic memory (e.g., hard-disk drive, floppy-disk drive, tape drive, MRAM, etc.), among others. Storage machine 404 may include volatile, nonvolatile, dynamic, static, read/write, read-only, random-access, sequential-access, location-addressable, file-addressable, and/or content-addressable devices.

It will be appreciated that storage machine 404 includes one or more physical devices. However, aspects of the instructions described herein alternatively may be propagated by a communication medium (e.g., an electromagnetic signal, an optical signal, etc.) that is not held by a physical device for a finite duration.

Aspects of logic machine 402 and storage machine 404 may be integrated together into one or more hardware-logic components. Such hardware-logic components may include field-programmable gate arrays (FPGAs), program- and application-specific integrated circuits (PASIC/ASICs), program- and application-specific standard products (PSSP/ASSPs), system-on-a-chip (SOC), and complex programmable logic devices (CPLDs), for example.

When included, display subsystem 406 may be used to present a visual representation of data held by storage machine 404. This visual representation may take the form of a graphical user interface (GUI). As the herein described methods and processes change the data held by the storage machine, and thus transform the state of the storage machine, the state of display subsystem 406 may likewise be transformed to visually represent changes in the underlying data. Display subsystem 406 may include one or more display devices utilizing virtually any type of technology. Such display devices may be combined with logic machine 402 and/or storage machine 404 in a shared enclosure, or such display devices may be peripheral display devices.

When included, input subsystem 408 may comprise or interface with one or more user-input devices such as a keyboard, mouse, touch screen, or game controller. In some embodiments, the input subsystem may comprise or interface with selected natural user input (NUI) componentry. Such componentry may be integrated or peripheral, and the transduction and/or processing of input actions may be handled on- or off-board. Example NUI componentry may include a microphone for speech and/or voice recognition; an infrared, color, stereoscopic, and/or depth camera for machine vision and/or gesture recognition; a head tracker, eye tracker, accelerometer, and/or gyroscope for motion detection and/or intent recognition; as well as electric-field sensing componentry for assessing brain activity.

It will be understood that the configurations and/or approaches described herein are exemplary in nature, and that these specific embodiments or examples are not to be considered in a limiting sense, because numerous variations are possible. The specific routines or methods described herein may represent one or more of any number of processing strategies. As such, various acts illustrated and/or described may be performed in the sequence illustrated and/or described, in other sequences, in parallel, or omitted. Likewise, the order of the above-described processes may be changed.

The subject matter of the present disclosure includes all novel and nonobvious combinations and subcombinations of the various processes, systems and configurations, and other features, functions, acts, and/or properties disclosed herein, as well as any and all equivalents thereof. 

1. A method of detecting edges, comprising: receiving an image including a plurality of pixels; for each of the plurality of pixels, making a plurality of different edge assessments for that pixel, each different edge assessment considering that pixel in a different position of a different pixel patch; and for each of the plurality of pixels, aggregating the different edge assessments for that pixel.
 2. The method of claim 1, wherein each different edge assessment uses a decision tree on a pixel patch.
 3. The method of claim 2, wherein a set of decision trees are used on the different pixel patches in a repeating pattern.
 4. The method of claim 2, wherein the decision tree is previously trained via supervised machine learning.
 5. The method of claim 1, wherein each different edge assessment uses a structured forest on a pixel patch, the structured forest using one or more decision trees on the pixel patch.
 6. The method of claim 5, wherein each different decision tree is previously trained via supervised machine learning.
 7. The method of claim 5, wherein the structured forest analysis uses four or fewer decision tress.
 8. The method of claim 5, wherein the structured forest analysis uses between two and four different decision trees.
 9. The method of claim 5, wherein different structured forests are used on different pixel patches.
 10. The method of claim 9, wherein a same structured forest is periodically used for different pixel patches.
 11. The method of claim 5, wherein a set of the different structured forests are used on the different pixel patches in a repeating pattern.
 12. A method of detecting edges, comprising: receiving an image including a plurality of pixels; for each of the plurality of pixels, making a plurality of different edge assessments for that pixel, each different edge assessment considering that pixel in a different position of a different pixel patch, and each different edge assessment utilizing a structured forest including two or more decision trees, wherein different structured forests are used on different pixel patches; and for each of the plurality of pixels, aggregating the different edge assessments for that pixel.
 13. The method of claim 12, wherein a same structured forest is periodically used for different pixel patches.
 14. The method of claim 12, wherein a set of the different structured forests are used on the different pixel patches in a repeating pattern.
 15. The method of claim 12, wherein each decision tree is previously trained via supervised machine learning.
 16. A method of detecting edges, comprising: receiving an image including a plurality of pixels; for each of the plurality of pixels, making a plurality of different edge assessments for that pixel, each different edge assessment considering that pixel in a different position of a different pixel patch, and each different edge assessment utilizing a structured forest including two to four decision trees; and for each of the plurality of pixels, aggregating the different edge assessments for that pixel.
 17. The method of claim 16, wherein each different decision tree is previously trained via supervised machine learning.
 18. The method of claim 16, wherein different structured forests are used on different pixel patches.
 19. The method of claim 18, wherein a same structured forest is periodically used for different pixel patches.
 20. The method of claim 18, wherein a set of the different structured forests are used on the different pixel patches in a repeating pattern. 